﻿#define  _CRT_SECURE_NO_WARNINGS
#include<iostream>
#include<list>
using namespace std;

//int main()
//{
//
//	int ar[] = { 0,1, 2, 3, 4,  5, 6, 7, 8, 9 };
//
//	int n = sizeof(ar) / sizeof(int);
//
//	list<int> mylist(ar, ar + n);
//
//	list<int>::iterator pos = find(mylist.begin(), mylist.end(), 5);
//
//	reverse(mylist.begin(), pos);
//
//	reverse(pos, mylist.end());
//
//	list<int>::const_reverse_iterator crit = mylist.crbegin();
//
//	while (crit != mylist.crend())
//	{
//
//		cout << *crit << " ";
//
//		++crit;
//
//	}
//
//	cout << endl;
//	return 0;
//}

//int main()
//{
//
//	int array[] = { 1, 2, 3, 4, 0, 5, 6, 7, 8, 9 };
//
//	int n = sizeof(array) / sizeof(int);
//
//	list<int> mylist(array, array + n);
//
//	auto it = mylist.begin();
//
//	while (it != mylist.end())
//
//	{
//
//		if (*it != 0)
//
//			cout << *it << " ";
//
//		else
//
//			it = mylist.erase(it);
//
//		++it;
//
//	}
//
//	return 0;
//
//}
////
//class Solution {
//public:
//    int evalRPN(vector<string>& tokens) {
//        stack<int> st;
//        for (auto& e : tokens)
//        {
//            if (e != "+" && e != "-" && e != "*" && e != "/")
//                st.push(stoi(e));
//            else
//            {
//                int right = st.top();
//                st.pop();
//                int left = st.top();
//                st.pop();
//                switch (e[0])
//                {
//                case '+':
//                    st.push(left + right); break;
//                case '-':
//                    st.push(left - right); break;
//                case '*':
//                    st.push(left * right); break;
//                case '/':
//                    st.push(left / right); break;
//                }
//            }
//        }
//        return st.top();
//    }
//};
//
//
//
//
//
//bool IsPopOrder(vector<int>& pushV, vector<int>& popV) {
//    // write code here
//    stack<int> st1;
//    stack<int> st2;
//    int i = 0;
//    for (auto e : pushV)
//    {
//        st1.push(e);
//        while (!st1.empty() && st1.top() == popV[i])
//        {
//            st1.pop();
//            i++;
//        }
//    }
//    return st1.empty();
//}
//};
//
//
//class MinStack {
//public:
//    MinStack() {
//    }
//
//    void push(int val) {
//        st.push(val);
//        if (minst.empty() || val <= minst.top())
//            minst.push(val);
//    }
//
//    void pop() {
//        if (minst.top() == st.top())
//            minst.pop();
//        st.pop();
//    }
//
//    int top() {
//        return st.top();
//    }
//
//    int getMin() {
//        return minst.top();
//    }
//    stack<int> st;
//    stack<int> minst;
//};